package pe.edu.pucp.Seguridad.Controlador;


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import pe.edu.pucp.Modelo.Perfil;
import pe.edu.pucp.Modelo.Usuario;
import pe.edu.pucp.Seguridad.DAO.PerfilDAO;
import pe.edu.pucp.Seguridad.Vista.PerfilGUI;
import pe.edu.pucp.Util.Constante;
import pe.edu.pucp.Util.LogHelper;
import pe.edu.pucp.Util.ValHelper;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author katy
 */
public class PerfilControlador {
    private PerfilDAO m;
    private PerfilGUI view ;
    private Perfil per;
    private Usuario usract;
    private BuscarPerfilControlador buscarPerfilControlador; 
        
    
    public PerfilControlador(PerfilDAO dao, PerfilGUI pview, BuscarPerfilControlador bpf, Perfil perfil, Usuario usuarioact){
        m = dao;
        view = pview;
        buscarPerfilControlador=bpf;
        per=perfil;
        usract=usuarioact;
        view.setFormPerfil(per);
        view.addCancelarListener(new cancelarListener());        
        view.addLimpiarListener(new limpiarListener()); 
        if (perfil!=null){
            view.addGuardarListener(new editarPerfilListener());    
            view.setEstadoGuardar("Modificar","Modificar Usuario");  
        }
        else{
            view.addGuardarListener(new registrarPerfilListener());    
            view.setEstadoGuardar("Registrar","Registrar Perfil");
        }
        
    }

    public void registrarPermisos(int id){
            if (view.getjcbPerfil()) { m.agregarPermiso(id,Constante.P_SEG_PERFIL,1);} else { m.agregarPermiso(id,Constante.P_SEG_PERFIL,0);}
            if (view.getjcbUsuario()){ m.agregarPermiso(id,Constante.P_SEG_USUARIO,1);} else { m.agregarPermiso(id,Constante.P_SEG_USUARIO,0);}
            if (view.getjcbConfiguracion()){ m.agregarPermiso(id,Constante.P_SEG_CONFIGURACION,1);} else { m.agregarPermiso(id,Constante.P_SEG_CONFIGURACION,0);}
            if (view.getjcbRepAuditoria()){ m.agregarPermiso(id,Constante.P_SEG_REPORTE,1);} else { m.agregarPermiso(id,Constante.P_SEG_REPORTE,0);}
            if (view.getjcbAeropuerto()){ m.agregarPermiso(id,Constante.P_ADM_AEROPUERTO,1);} else { m.agregarPermiso(id,Constante.P_ADM_AEROPUERTO,0);}
            if (view.getjcbCargaVuelo()){ m.agregarPermiso(id,Constante.P_ADM_CARGAVUELO,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARGAVUELO,0);}
            if (view.getjcbCargaMasiva()){ m.agregarPermiso(id,Constante.P_ADM_CARGAMASIVA,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARGAMASIVA,0);}
            if (view.getjcbVuelo()){ m.agregarPermiso(id,Constante.P_ENV_VUELO,1);} else { m.agregarPermiso(id,Constante.P_ENV_VUELO,0);}
            if (view.getjcbCliente()){ m.agregarPermiso(id,Constante.P_ENV_CLIENTE,1);} else { m.agregarPermiso(id,Constante.P_ENV_CLIENTE,0);}            
            if (view.getjcbAlmacen()){ m.agregarPermiso(id,Constante.P_ENV_ALMACEN,1);} else { m.agregarPermiso(id,Constante.P_ENV_ALMACEN,0);}
            if (view.getjcbRepEnvio()){ m.agregarPermiso(id,Constante.P_ENV_REPORTE,1);} else { m.agregarPermiso(id,Constante.P_ENV_REPORTE,0);}
            if (view.getjcbSimulacion()){ m.agregarPermiso(id,Constante.P_SIM_SIMULACION,1);} else { m.agregarPermiso(id,Constante.P_SIM_SIMULACION,0);}            
            if (view.getjcbRepKardex()){ m.agregarPermiso(id,Constante.P_REP_KARDEX,1);} else { m.agregarPermiso(id,Constante.P_REP_KARDEX,0);}
            if (view.getjcbRepCancelacion()){ m.agregarPermiso(id,Constante.P_REP_CANCELACION,1);} else { m.agregarPermiso(id,Constante.P_REP_CANCELACION,0);}            
            if (view.getjcbRepAlmacen()){ m.agregarPermiso(id,Constante.P_REP_ALMACEN,1);} else { m.agregarPermiso(id,Constante.P_REP_ALMACEN,0);}           
            
            if (view.getjcbPerfilB()){ m.agregarPermiso(id,Constante.P_SEG_PER_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_PER_BUSCAR,0);}
            if (view.getjcbPerfilR()){ m.agregarPermiso(id,Constante.P_SEG_PER_REGISTRAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_PER_REGISTRAR,0);}
            if (view.getjcbPerfilE()){ m.agregarPermiso(id,Constante.P_SEG_PER_EDITAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_PER_EDITAR,0);}
            if (view.getjcbPerfilI()){ m.agregarPermiso(id,Constante.P_SEG_PER_INACTIVAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_PER_INACTIVAR,0);}
            if (view.getjcbPerfilA()){ m.agregarPermiso(id,Constante.P_SEG_PER_ACTIVAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_PER_ACTIVAR,0);}
            if (view.getjcbUsuarioB()){ m.agregarPermiso(id,Constante.P_SEG_USR_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_USR_BUSCAR,0);}
            if (view.getjcbUsuarioR()){ m.agregarPermiso(id,Constante.P_SEG_USR_REGISTRAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_USR_REGISTRAR,0);}
            if (view.getjcbUsuarioE()){ m.agregarPermiso(id,Constante.P_SEG_USR_EDITAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_USR_EDITAR,0);}
            if (view.getjcbUsuarioI()){ m.agregarPermiso(id,Constante.P_SEG_USR_INACTIVAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_USR_INACTIVAR,0);}
            if (view.getjcbUsuarioA()){ m.agregarPermiso(id,Constante.P_SEG_USR_ACTIVAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_USR_ACTIVAR,0);}
            if (view.getjcbConfiguracionG()){ m.agregarPermiso(id,Constante.P_SEG_CON_GUARDAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_CON_GUARDAR,0);}
            if (view.getjcbRepAuditoriaB()){ m.agregarPermiso(id,Constante.P_SEG_REP_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_REP_BUSCAR,0);}
            if (view.getjcbRepAuditoriaG()){ m.agregarPermiso(id,Constante.P_SEG_REP_GENERAR,1);} else { m.agregarPermiso(id,Constante.P_SEG_REP_GENERAR,0);}
            
            if (view.getjcbBusAeropuerto()){ m.agregarPermiso(id,Constante.P_ADM_AER_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_AER_BUSCAR,0);}
            if (view.getjcbRegAeropuerto()){ m.agregarPermiso(id,Constante.P_ADM_AER_REGISTRAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_AER_REGISTRAR,0);}
            if (view.getjcbEditAeropuerto()){ m.agregarPermiso(id,Constante.P_ADM_AER_EDITAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_AER_EDITAR,0);}
            if (view.getjcbCarVueloB()){ m.agregarPermiso(id,Constante.P_ADM_CARV_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARV_BUSCAR,0);}
            if (view.getjcbCarVueloM()){ m.agregarPermiso(id,Constante.P_ADM_CARV_MOSTRAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARV_MOSTRAR,0);}
            if (view.getjcbCarVueloA()){ m.agregarPermiso(id,Constante.P_ADM_CARV_ABRIR,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARV_ABRIR,0);}
            if (view.getjcbCarVueloC()){ m.agregarPermiso(id,Constante.P_ADM_CARV_CARGAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARV_CARGAR,0);}
            if (view.getjcbCarMasivaA()){ m.agregarPermiso(id,Constante.P_ADM_CARM_ABRIR,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARM_ABRIR,0);}
            if (view.getjcbCarMasivaC()){ m.agregarPermiso(id,Constante.P_ADM_CARM_CARGAR,1);} else { m.agregarPermiso(id,Constante.P_ADM_CARM_CARGAR,0);}
            
            if (view.getjcbBusVuelo()){ m.agregarPermiso(id,Constante.P_ENV_VUE_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_VUE_BUSCAR,0);}
            if (view.getjcbBusCliente()){ m.agregarPermiso(id,Constante.P_ENV_CLI_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_CLI_BUSCAR,0);}
            if (view.getjcbRegCliente()){ m.agregarPermiso(id,Constante.P_ENV_CLI_REGISTRAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_CLI_REGISTRAR,0);}
            if (view.getjcbEditCliente()){ m.agregarPermiso(id,Constante.P_ENV_CLI_EDITAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_CLI_EDITAR,0);}            
            if (view.getjcbBusAlmacen()){ m.agregarPermiso(id,Constante.P_ENV_ALM_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_ALM_BUSCAR,0);}
            if (view.getjcbRegAlmacen()){ m.agregarPermiso(id,Constante.P_ENV_ALM_REGISTRAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_ALM_REGISTRAR,0);}
            if (view.getjcbEntAlmacen()){ m.agregarPermiso(id,Constante.P_ENV_ALM_ENTRADA,1);} else { m.agregarPermiso(id,Constante.P_ENV_ALM_ENTRADA,0);}
            if (view.getjcbSalAlmacen()){ m.agregarPermiso(id,Constante.P_ENV_ALM_SALIDA,1);} else { m.agregarPermiso(id,Constante.P_ENV_ALM_SALIDA,0);}
            if (view.getjcbRepEnvioB()){ m.agregarPermiso(id,Constante.P_ENV_REP_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_REP_BUSCAR,0);}
            if (view.getjcbRepEnvioG()){ m.agregarPermiso(id,Constante.P_ENV_REP_GENERAR,1);} else { m.agregarPermiso(id,Constante.P_ENV_REP_GENERAR,0);}
            
            
            if (view.getjcbSimSimulador()){ m.agregarPermiso(id,Constante.P_SIM_SIM_SIMULAR,1);} else { m.agregarPermiso(id,Constante.P_SIM_SIM_SIMULAR,0);}
            if (view.getjcbSimReporteB()){ m.agregarPermiso(id,Constante.P_SIM_REP_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_SIM_REP_BUSCAR,0);}
            if (view.getjcbSimReporteG()){ m.agregarPermiso(id,Constante.P_SIM_REP_GENERAR,1);} else { m.agregarPermiso(id,Constante.P_SIM_REP_GENERAR,0);}
            
            if (view.getjcbRepKardexB()){ m.agregarPermiso(id,Constante.P_REP_KAR_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_REP_KAR_BUSCAR,0);}
            if (view.getjcbRepKardexG()){ m.agregarPermiso(id,Constante.P_REP_KAR_GENERAR,1);} else { m.agregarPermiso(id,Constante.P_REP_KAR_GENERAR,0);}
            if (view.getjcbRepCancelacionB()){ m.agregarPermiso(id,Constante.P_REP_CAN_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_REP_CAN_BUSCAR,0);}            
            if (view.getjcbRepCancelacionG()){ m.agregarPermiso(id,Constante.P_REP_CAN_GENERAR,1);} else { m.agregarPermiso(id,Constante.P_REP_CAN_GENERAR,0);}            
            if (view.getjcbRepAlmacenB()){ m.agregarPermiso(id,Constante.P_REP_ALM_BUSCAR,1);} else { m.agregarPermiso(id,Constante.P_REP_ALM_BUSCAR,0);}
            if (view.getjcbRepAlmacenG()){ m.agregarPermiso(id,Constante.P_REP_ALM_GENERAR,1);} else { m.agregarPermiso(id,Constante.P_REP_ALM_GENERAR,0);}
                    
    }
    
    class editarPerfilListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {    
            
            if (view.getDescripcion().isEmpty()){
                ValHelper.mostrarError("El campo de nombre de perfil está vacío");                
                return;
            }
            if (m.existeNombrePerfil(view.getDescripcion(),per.getIdperfil())){
                ValHelper.mostrarError("El nombre de perfil ya se encuentra registrado");
                return;
            } 
            
            per.setDescripcion(view.getDescripcion());
            per.setDurpass(view.getTCambioPass());            
            per.setDursesion(1);                                                           
            registrarPermisos(m.modificarPerfil(per).getIdperfil());
            LogHelper.registrarOperacion(usract, Constante.ACCION_MODIFICAR, Constante.OBJETO_PERFIL, "Se modificó el perfil "+per.getDescripcion());
            ValHelper.mostrarAviso("Se modificó el perfil con éxito");            
            buscarPerfilControlador.listarResultados();
            view.dispose();            
        }
    }    
    
    class registrarPerfilListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
  
            if (view.getDescripcion().isEmpty()){
                ValHelper.mostrarError("El campo de nombre de perfil está vacío");                
                return;
            }
            if (m.existeNombrePerfil(view.getDescripcion())){
                ValHelper.mostrarError("El nombre de perfil ya se encuentra registrado");
                return;
            }            
            Perfil a = new Perfil();               
            a.setDescripcion(view.getDescripcion());
            a.setEstadoPerfil(m.buscarEstado(Constante.ESTADO_PERFIL_ACTIVO));
            a.setDurpass(view.getTCambioPass());            
            a.setDursesion(1);                      
            a.setFechareg(new Date());            
            registrarPermisos(m.guardarPerfil(a).getIdperfil());   
            LogHelper.registrarOperacion(usract, Constante.ACCION_REGISTRAR, Constante.OBJETO_PERFIL, "Se registró el perfil "+a.getDescripcion());
            ValHelper.mostrarAviso("Se registró el perfil con éxito");
            buscarPerfilControlador.listarResultados();
            view.dispose();            
        }
    }
    
    class cancelarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            view.dispose();
        }        
    }      

    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            view.LimpiarDatos();
        }        
    }      
}
